Шрифт:
Интервал:
Закладка:
Отображением интерфейса JavaFX-приложения является графическое представление графа сцены.
Каждый узел графа JavaFX-сцены – это компонент графического интерфейса пользователя – имеет такие свойства как идентификатор, CSS-стиль, границы, визуальные эффекты, прозрачность, трансформации, обработчики событий, состояние, режим наложения и участие в анимации.
Для отображения интерфейса, разработанного на основе платформы JavaFX, и соответственно создания графического представления графа сцены, среда выполнения JavaFX Runtime предоставляет графическую систему, содержащую следующие модули:
Prism – производит растеризацию и рендеринг JavaFX-сцен с использованием аппаратного ускорения и на основе программного обеспечения – технологии DirectX 9 – для Windows XP и Windows Vista, DirectX 11 – для Windows 7 и OpenGL – для Mac, Linux, Embedded.
При отсутствии поддержки аппаратного ускорения рендеринг осуществляется на основе технологии Java2D.
Glass Windowing Toolkit – это платформо-зависимая реализация, связывающая платформу JavaFX с операционной системой компьютера.
Помимо обеспечения системных сервисов управления окном, видом и временем, система Glass отвечает за очередь событий.
В отличие от графической системы Abstract Window Toolkit (AWT), которая создает свою собственную очередь событий и два потока – один для работы Peer-компонентов, а другой для работы Java-компонентов, система Glass использует очередь событий операционной системы и работает в том же потоке, что и JavaFX-приложение.
При этом основной поток JavaFX-приложения отличается от AWT и Swing потока Event Dispatch Thread (EDT).
Quantum Toolkit – связывает системы Prism и Glass вместе и делает их доступными для других модулей среды выполнения JavaFX Runtime.
Media Engine – обеспечивает воспроизведение MP3, AIFF и WAV аудиофайлов и FLV видеофайлов.
Web Engine – основывается на проекте WebKit и обеспечивает поддержку HTML5, CSS, JavaScript, DOM и SVG, отображение локального и удаленного HTML-контента, обновление и редактирование HTML-контента с поддержкой истории и навигации, обработку событий, выполнение JavaScript-кода и применения эффектов.
Для обеспечения работы JavaFX-приложения среда выполнения JavaFX Runtime создает следующий набор параллельных потоков:
Основной поток JavaFX-приложения JavaFX Application Thread – отвечает за обновление сцены, обработку анимации и событий.
Поток рендеринга системы Prism, который может содержать дополнительные потоки растеризации – отвечает за отрисовку сцены.
Фоновый медиа поток – отвечает за декодирование, буферизацию и воспроизведение аудио и видео.
Синхронизация графа сцены с его графическим представлением осуществляется с помощью событий Pulse, которые генерируются средой выполнения JavaFX Runtime с максимальной частотой 1/60 секунды и посылаются в очередь событий при анимации и всякий раз, когда изменяется граф сцены, вызывая перерисовку сцены с применением компоновок и стилей.
Модель программирования приложений платформы JavaFX
Точкой входа в JavaFX-приложение служит Java-класс, расширяющий абстрактный класс javafx. application. Application и содержащий его переопределенный метод start.
Главный класс JavaFX-приложения должен переопределить абстрактный метод start класса Application, обеспечивающий создание и отображение сцены JavaFX-приложения.
Методы init, start и stop класса Application являются методами обратного вызова жизненного цикла JavaFX-приложения.
Методы init и stop класса Application могут использоваться для инициализации данных и освобождения ресурсов JavaFX-приложения.
Метод launch класса Application запускает настольное приложение в методе main.
Вызов метода launch класса Application инициализирует среду выполнения JavaFX.
При этом среда выполнения JavaFX выполняет следующие действия.
Она создает экземпляр класса приложения, вызывает его метод init.
Далее вызывает метод start.
И ожидает завершения приложения, которое происходит, когда происходит одно из следующих событий:
Приложение вызывает метод Platform. exit.
Класс Platform пакета application является вспомогательным классом.
Последнее окно приложения закрывается, и атрибут implicitExit класса Platform имеет значение true.
После этого среда выполнения вызывает метод stop.
Обратите внимание, что метод start является абстрактным в классе Application и должен быть переопределен.
Методы init и stop имеют конкретные реализации, которые ничего не делают.
Вызов метода Platform. exit – это предпочтительный способ явно закрыть приложение JavaFX.
Непосредственный вызов обычного метода System. exit является приемлемой альтернативой, но не позволяет запустить метод stop.
Среда выполнения JavaFX создает поток приложения JavaFX Application Thread для запуска метода start, обработки входных событий и выполнения анимации.
Создание объектов Scene и Stage, а также модификация графа сцены, должны выполняться в потоке приложения JavaFX Application Thread.
Метод init вызывается в потоке запуска, а не в потоке приложения JavaFX Application Thread.
Это означает, что приложение не должно напрямую создавать объекты Scene или Stage в методе init.
Так как метод init вызывается перед созданием главного потока приложения JavaFX Application Thread, то инициализация JavaFX-приложения в методе init с использованием узлов графа сцены должна осуществляться с применением статического метода Platform.runLater, который позволяет выполнить код в потоке JavaFX Application Thread в какой-то момент времени в будущем.
Метод start класса Application содержит в качестве параметра объект Stage, представляющий графический контейнер главного окна JavaFX-приложения.
Данный объект Stage создается средой выполнения при запуске JavaFX-приложения и передается в метод start главного класса JavaFX-приложения, что позволяет использовать методы объекта Stage для установки и отображения сцены JavaFX-приложения.
Вместо объекта Stage, аргумента метода start, разработчик может создать свой экземпляр класса Stage для отображения сцены JavaFX-приложения.
Перед установкой и отображением сцены в графическом контейнере Stage главного окна JavaFX-приложения необходимо создать граф сцены, состоящий из корневого узла и его дочерних элементов, и на его основе создать объект Scene сцены.
Как правило, в качестве корневого узла используется объект Group или компоновки пакета scene.layout, которые создаются с помощью конструктора и используются в качестве аргумента конструктора при создании объекта Scene.
Дочерние узлы графа сцены, представляющие графику, элементы контроля интерфейса, медиаконтент, добавляются в корневой узел с помощью метода getChildren.add или метода getChildren.addAll.
При этом дочерние узлы могут иметь визуальные эффекты, режимы наложения, CSS-стили, прозрачность, трансформации, обработчики событий, участвовать в анимации и др.
После создания корневого узла сцены, добавления в него дочерних компонентов.
Создания на основе корневого узла объекта Scene, главное окно Stage устанавливает сцену методом setScene.
Для главного окна устанавливается заголовок методом setTitle.
И окно приложения отображается методом show.
Создание и развертывание JavaFX-приложений
Наиболее полно для создания JavaFX приложений подходит среда разработки NetBeans.
Для создания JavaFX приложения достаточно в меню Файл выбрать Создать проект и в разделе JavaFX выбрать Приложение JavaFX.
В результате будет сгенерирована основа JavaFX приложения.
Для сборки готового приложения, с помощью выбора команды меню Очистить и построить среды NetBeans в каталоге проекта создается папка dist, содержащая исполняемый JAR-файл JavaFX-приложения, а также JNLP-файл и HTML-страничку для JWS-развертывания приложения.
Также вы можете собрать настольное автономное приложение с EXE-файлом и JavaFX средой выполнения.
Для этого вам нужно предварительно скачать и установить Inno Setup – бесплатный установщик для программ Windows.
Затем вам нужно добавить каталог инструмента Inno Setup в переменную Path переменных системы.
В свойствах проекта нужно отметить флажок Разрешить создание родных пакетов.
После этого при нажатии правой кнопкой мыши на проекте появится меню Пакет как.
Выбрав Установщик EXE, вы получите в каталоге dist папку bundles
- C# для профессионалов. Том II - Симон Робинсон - Программирование
- Как спроектировать современный сайт - Чои Вин - Программирование
- Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2 - Александр Фролов - Программирование
- Программирование на Java - Н.А. Вязовик - Программирование
- ИНФОРМАЦИОННАЯ ТЕХНОЛОГИЯ. РУКОВОДСТВО ПО УПРАВЛЕНИЮ ДОКУМЕНТИРОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ - ГОССТАНДАРТ РОССИИ - Программирование
- Каждому проекту своя методология - Алистэр Коуберн - Программирование
- Сделай видеоигру один и не свихнись - Слава Грис - Программирование / Руководства
- Как почистить сканы книг и сделать книгу - IvanStorogev? KpNemo - Программирование